package com.jimikongjian.service.base;

import com.jimikongjian.models.Article;
import com.jimikongjian.models.ResponseMessage;

/**
 * Created by fuxiuyang on 17/2/27.
 */
public interface IArticleService {

    /**
     * 创建文章
     * @param article
     * @return
     */
    public ResponseMessage createArticle(Article article);

    /**
     * 通过文章的id查询文章
     * @param id
     * @return
     */
    public ResponseMessage selectArticleById(int id);


    /**
     * 查询是否含有该文章
     * @param id
     * @return
     */
    public boolean hasArticle(int id);


    /**
     * 通过空间的id号，查询该空间所有的文章
     * @param roomId
     * @param desc
     * @param start
     * @param length
     * @return
     */
    public ResponseMessage selectArticleByRoomId(int userId, int roomId, int orderBy, int desc, int start, int length);

    /**
     * 通过作者的id号，查询作者所写的所有的文章
     * @param author
     * @param start
     * @param length
     * @return
     */
    public ResponseMessage selectArticleByAuthor(int userId, int author, int start, int length);

    /**
     * 通过用户的id号，查询用户所关注的空间的所有的文章
     * @param userId
     * @param desc
     * @param start
     * @param length
     * @return
     */
    public ResponseMessage selectArticleByUserId(int userId, int orderBy, int desc, int start, int length);

    /**
     * 更新文章收藏数，评论数，分享数和受欢迎权重值
     * @param article
     * @return
     */
    public void updateArticle(Article article);

    /**
     * 文章点击查看数自加1
     * @param id
     */
    public void updateAddArticleClickCount(int id);

    /**
     * 一篇文章喜爱的数量自加1
     * @param id
     */
    public void updateAddArticleLikeCount(int id);

    /**
     * 一篇文章喜爱的数量自减1
     * @param id
     */
    public void updateSubArticleLikeCount(int id);

    /**
     * 更新一篇文章评论的数量自加1
     * @param id
     */
    public void updateAddArticleCommentCount(int id);

    /**
     * 更新一篇文章评论的数量自减1
     * @param id
     */
    public void updateSubArticleCommentCount(int id);

    /**
     * 更新一篇文章点赞的数量自加1
     * @param id
     */
    public void updateAddArticleUpvoteCount(int id);

    /**
     * 更新一篇文章点赞的数量自减1
     * @param id
     */
    public void updateSubArticleUpvoteCount(int id);

    /**
     * 更新一篇文章推荐的权重
     * @param id
     */
    public void updateArticleValue(int id);
}
